package com.web.common.basic.quartz.entity;

import java.util.Date;
import java.util.Map;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@Schema(title = "定时任务创建参数", description = "定时任务创建参数")
public class QuartzJobParam {

	/** 定时任务的名称（必填） */
	@NotBlank(message = "未填写定时任务名称")
	@Schema(title = "定时任务的名称（必填）")
	private String jobName;
	
	/** 定时任务分组 */
	@Schema(title = "定时任务分组")
	private String jobGroup;
	
	/** 任务执行的类的名称（必填） */
	@NotBlank(message = "未填写任务执行的类名称")
	@Schema(title = "任务执行的类的名称（必填）")
	private String jobClassName;
	
	/** 方法调用的参数 */
	@Schema(title = "方法调用的参数")
	private Map<String, String> param;
	
	/** 定时任务开始时间 */
	@Schema(title = "定时任务开始时间")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
	private Date startAt;
	
	/** 定时任务结束时间 */
	@Schema(title = "定时任务结束时间")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
	private Date endAt;
	
	/** 定时任务描述 */
	@Schema(title = " 定时任务描述")
	private String description;
	
	/** 定时任务类型，0固定频率；1cron表达式 */
	@NotNull(message = "未选择定时任务类型")
	@Schema(title = "定时任务类型，0固定频率；1cron表达式")
	private Integer quartzType;
	
	/** cron表达式 */
	@Schema(title = "cron表达式")
	private String cron;
	
	/** 定时任务执行间隔（单位：秒）（固定频率必填） */
	@Schema(title = "定时任务执行间隔（单位：秒）（固定频率必填）")
	private Integer interval;
	
	/** 重复次数，实际执行次数 = 1 + 重复次数，例如设置2，实际执行3次 */
	@Schema(title = "重复次数，实际执行次数 = 1 + 重复次数，例如设置2，实际执行3次")
	private Integer repeatCount;
}
